class Solution {
public:
    bool isOneBitCharacter(vector<int>& bits) {
        
        int n=bits.size();
        vector<bool> dp(n);
        if(bits.back()!=0){
            return false;
        }
        dp[n-1]=true;
        for(int i=n-2;i>=0;--i){
            if(i==n-2){
                dp[i]=dp[i+1] && bits[i]==0;
            }
            else{
                dp[i]=dp[i+1] && bits[i]==0;
                if(!dp[i]){
                    dp[i]=dp[i+2] && (bits[i]==1 && bits[i+1]==1 || bits[i]==1 && bits[i+1]==0);
                }
            }
        }
        for(int i=0;i<n;++i){
            if(dp[i]){
                cout<<1;
            }
            else{
                cout<<0;
            }
        }
        return dp[0];
    }
};
